package org.wu.acw.server.domain.model.model.acw.table;

import org.wu.framework.lazy.orm.core.config.enums.LazyDataSourceType;
import org.wu.framework.lazy.orm.core.persistence.conf.LazyTableInfo;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;
import org.wu.framework.web.response.Result;
import org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyDomainRepository;
import org.wu.acw.server.application.dto.AcwTableColumnDTO;

import java.util.List;
/**
 * describe 数据库表信息（即将弃用） 
 *
 * @author Jia wei Wu
 * @date 2023/09/29 12:30 下午
 * @see DefaultDDDLazyDomainRepository
 **/

public interface AcwTableRepository {



    /**
     * 是否支持当前数据源类型
     * @param lazyDataSourceType 数据源类型
     * @return 是否支持
     */
    boolean support(LazyDataSourceType lazyDataSourceType);


    /**
     * describe 查询多个数据库表信息（即将弃用）
     *
     * @param
     * @return
     * @exception/throws
     * @author Jia wei Wu
     * @date 2023/09/29 12:30 下午
     **/

    Result<List<AcwTable>> findList(AcwTable acwTable);

    /**
     * describe 分页查询多个数据库表信息（即将弃用）
     *
     * @param
     * @return
     * @exception/throws
     * @author Jia wei Wu
     * @date 2023/09/29 12:30 下午
     **/

    Result<LazyPage<AcwTable>> findPage(int size, int current, AcwTable acwTable);


    /**
     * 获取表字段
     *
     * @param schemaName 数据库
     * @param tableName 表名称
     * @return
     */
    List<AcwTableColumnDTO> findColumnList(String schemaName,String tableName);

    /**
     * 查询所有的表信息
     *
     * @param schemaName 数据库
     * @return
     */
    <T extends LazyTableInfo> List<T> findListBySchema(String schemaName);
}